﻿using System;
using System.Collections.Generic;

namespace CRM.Database.Model
{
    public partial class profineRegions : IGetLocalizedName, ISetChangedUser, IGetKeyValue, IGetNamesValues
    {
        /// <summary>
        /// Локализованное название страны
        /// </summary>
        public string CountryNameLocalized
        {
            get
            {
                if (Countries == null)
                {
                    return null;
                }
                return Countries.CountryNameLocalized;
            }
        }

        /// <summary>
        /// Локализованное название
        /// </summary>
        public string LocalizedName
        {
            get { return GetLocalizedName(); }
        }

        /// <summary>
        /// Локализованное имя региона профайн
        /// </summary>
        public string profineRegionLocalizedName
        {
            get { return GetLocalizedName(); }
        }

        #region Implementation of ISetChangedUser

        /// <summary>
        /// Установка пользователя, который сделал изменение
        /// </summary>
        /// <param name="userLogin">Логин пользователя</param>
        public void SetChangedUser(string userLogin)
        {
            if (string.IsNullOrEmpty(userLogin))
                throw new Exception("Логин пользователя не должен быть пустым!");
            IdUser = userLogin;
        }

        #endregion

        #region Implementation of IGetLocalizedName

        /// <summary>
        /// Получение имени на выбранном языке
        /// </summary>
        /// <param name="currentLanguage">Язык</param>
        /// <returns>Имя на заданном языке</returns>
        public string GetLocalizedName(CurrentLanguage currentLanguage)
        {
            switch (currentLanguage)
            {
                case CurrentLanguage.Russian:
                    return NameRu;
                case CurrentLanguage.English:
                    return NameEn;
                default:
                    throw new ArgumentOutOfRangeException("currentLanguage");
            }
        }

        /// <summary>
        /// Получение имени на текущем языке
        /// </summary>
        /// <returns>Локализованное имя</returns>
        public string GetLocalizedName()
        {
            CurrentLanguage lang = DB.CurrentLanguage;
            return GetLocalizedName(lang);
        }

        #endregion

        #region Implementation of IGetKeyValue

        /// <summary>
        /// Получение ключего значения элемента
        /// </summary>
        /// <returns>Ключевое значение</returns>
        public int GetKeyValue()
        {
            return IdProfineRegion;
        }

        #endregion

        #region Implementation of IGetNamesValues

        /// <summary>
        /// Получение списка имён
        /// </summary>
        /// <returns>Список имён</returns>
        public List<string> GetNamesValues()
        {
            var list = new List<string>();
            list.Add(NameRu);
            list.Add(NameEn);
            return list;
        }

        #endregion
    }
}